<?php
namespace Modules\Menu\Library;

class Form
{
    public static function saveLink(\Core\Forms\Form $form)
    {
        $di = \Phalcon\Di::getDefault();
        $config = $di->getShared('config');
        $data = $form->getData();

        $menuData = $config->get('m.menu.menu' . ucfirst($data['menu']) . 'Data');
        $menuHierarchy = $config->get('m.menu.menu' . ucfirst($data['menu']) . 'Hierarchy');

        $menuData[$data['id']] = $data;
        if (!$form->isEdit()) {
            $menuHierarchy[$data['id']] = $data['id'];
        }

        if ($config->set('m.menu.menu' . ucfirst($data['menu']) . 'Data', $menuData) && $config->set('m.menu.menu' . ucfirst($data['menu']) . 'Hierarchy', $menuHierarchy)) {
            return true;
        } else {
            return false;
        }
    }

    public static function toLink($link)
    {
        if ($link[0] != '@') {
            return $link;
        } else {
            $link = trim($link, '@');
            $linkArrOne = explode(';', $link);
            $output = array();
            foreach ($linkArrOne as $lao) {
                $linkArrTwo = explode(':', $lao);
                $output[trim($linkArrTwo[0])] = trim($linkArrTwo[1]);
            }
            return $output;
        }
    }

    public static function hrefInit($params)
    {
        $params['data'][$params['key']] = self::linkTo($params['data'][$params['key']]);
        return $params;
    }

    public static function linkTo($link)
    {
        if (is_string($link)) {
            return $link;
        } elseif (is_array($link)) {
            $output = '';
            foreach ($link as $key => $value) {
                $output = $output . $key . ':' . $value . ';';
            }
            $output = trim($output, ';');
            $output = '@' . $output;
            return $output;
        }
    }

    public static function menuData($id)
    {
        $di = \Phalcon\Di::getDefault();
        $menu = array(
            '#templates' => array(
                'menu-' . $id,
                'menu',
            ),
            'data' => $di->getShared('config')->cacheGet('m.menu.menu_' . $id . 'Data'),
        );
        return $menu;
    }

    public static function menuHierarchy($id)
    {
        $di = \Phalcon\Di::getDefault();
        $menu = array(
            '#templates' => array(
                'menu-' . $id,
                'menu',
            ),
            'data' => $di->getShared('config')->cacheGet('m.menu.menu_' . $id . 'Hierarchy'),
        );
        return $menu;
    }

    public static function menuRender($id)
    {
        $di = \Phalcon\Di::getDefault();
        $menu = array(
            '#templates' => array(
                'menu',
                'menu-' . $id,
            ),
            'data' => $di->getShared('config')->cacheGet('m.menu.menu_' . $id . 'Data'),
            'hierarchy' => $di->getShared('config')->cacheGet('m.menu.menu_' . $id . 'Hierarchy'),
        );
        return $menu;
    }
}
